using System;
using System.Collections.Generic;
using System.Text;
using AntEater.ComponentModel.BuildElements;

namespace AntEater.Runtime.UI
{

    /// <summary>
    /// Specifies an Paste Action.
    /// </summary>
    internal enum PasteAction
    {
        /// <summary>
        /// Paste as Child of the container.
        /// </summary>
        PasteChild = 0,
        
        /// <summary>
        /// Paste before the reference.
        /// </summary>
        PasteBeforeReference = 1,
        
        /// <summary>
        /// Paste after the reference.
        /// </summary>
        PasteAfterReference = 2
    }

    /// <summary>
    /// Provides EventArguments for paste events.
    /// </summary>
    internal class PasteBuildElementEventArgs:EventArgs
    {

        /// <summary>
        /// Initializes a new instance of the <see cref="T:PasteBuildElementEventArgs"/> class.
        /// </summary>
        /// <param name="action">The action.</param>
        /// <param name="containerBuildElement">The container build element.</param>
        /// <param name="refrenceBuildElement">The refrence build element.</param>
        public PasteBuildElementEventArgs (PasteAction action, IContainerBuildElement containerBuildElement, IBuildElement refrenceBuildElement) {
            this._action = action;
            this._containerBuildElement = containerBuildElement;
            this._refrenceBuildElement = refrenceBuildElement;
        }

        private PasteAction _action;

        /// <summary>
        /// Gets the action.
        /// </summary>
        /// <value>The action.</value>
        public PasteAction Action {
            get { return _action; }
        }

        private IContainerBuildElement _containerBuildElement;

        /// <summary>
        /// Gets the container build element.
        /// </summary>
        /// <value>The container build element.</value>
        public IContainerBuildElement ContainerBuildElement {
            get { return _containerBuildElement; }
        }

        private IBuildElement _refrenceBuildElement;

        /// <summary>
        /// Gets the refrence build element.
        /// </summary>
        /// <value>The refrence build element.</value>
        public IBuildElement RefrenceBuildElement {
            get { return _refrenceBuildElement; }
        }
    }
}
